package com.zfk.framework.utils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FilesScan {
    /**
     *
     * @param path:文件目录名
     * @param suffix：文件后缀名，以.开头
     * @return ：返回包含文件名的列表
     */
    public static List<String> getFilesBySuffix(String path, String suffix) {


        //先需要判断路径是不是存在
        File DirectoryPath = new File(path);
        if (!DirectoryPath.exists() || !DirectoryPath.isDirectory()) {
            throw new IllegalArgumentException("文件路径" + path + "不存在！");
        }
        //还需要确保文件后缀名是以“.”开头的

        if (!suffix.startsWith(".")) {
            suffix = "." + suffix;
        }
        //然后开始过滤文件名，首先初始化存储文件名的动态数组
        List<String> fileNameList = new ArrayList<>();
        File[] tmpFiles = DirectoryPath.listFiles();//返回路径下的所有文件名，这是个数组
//        System.out.println("Files in directory: " + Arrays.toString(tmpFiles));//调试代码

        //然后遍历上面的数组，筛选合适的格式
        if (tmpFiles!= null) {
            for (File file : tmpFiles) {
                //这里需要分两种情况讨论，如果是文件，那就开始过滤后缀名，获取完整路径名，统一分割符号
                if (file.isFile() && file.getName().toLowerCase().endsWith(suffix.toLowerCase())) {
                    //使用file.getPath() 获取完整路径，
                    String filePath=file.getPath().replace(File.separator,"/");
                    fileNameList.add(filePath);
                } else if (file.isDirectory()) {
                    //如果是目录那就递归调用
                    fileNameList.addAll(getFilesBySuffix(file.getPath(), suffix));

                }
            }
        }
        return fileNameList;
    }
}
